草庐IT

Java String.split 内存泄漏?

全部标签

C# 释放 IntPtr 引用的内存

我正在使用一些非托管代码,这些代码将指针(IntPtr)返回到大型图像对象。我使用引用,但在处理完图像后,我需要释放指针引用的内存。目前,唯一能释放内存的是关闭我的整个应用程序。我需要能够从我的应用程序内部释放该内存。这是分配内存的调用。hbitmap是返回的指针,需要释放。[DllImport("twain_32.dll",EntryPoint="#1")]publicstaticexternTwainResultDsImageTransfer([In,Out]Identityorigin,[In]Identitydest,DataGroupdg,DataArgumentTypeda

c# - MemoryFailPoint 始终抛出 InsufficientMemoryException,即使内存可用也是如此

我写了下面的代码来检查内存是否充足,while(true){try{//Checkforavailablememory.memFailPoint=newMemoryFailPoint(250);break;}catch(InsufficientMemoryExceptionex){if(memFailPoint!=null){memFailPoint.Dispose();}Thread.Sleep(waitSecond*1000);}}我在Windows764位计算机上的控制台应用程序中运行上述内容。此方法每10秒调用4次。最初它工作正常,但在2-3小时后,总是抛出Insufficie

c# - C# List<char[]> 是否分配在连续内存中?

如果我声明一个char数组列表,它们是分配在连续的内存中,还是.NET创建一个链接列表?如果它不是连续的,有没有办法声明一个连续的char数组列表?char数组的大小是预先知道的并且是固定的(它们的大小都相同)。 最佳答案 是的,但不是您想要的方式。List保证它的元素是连续存储的。数组是引用类型,因此引用连续存储为List保证。但是,数组本身是单独分配的,它们的存储位置与列表无关。它只关心它的元素,即引用。如果您需要,那么您应该只使用一个大数组并维护边界数据。编辑:根据您的评论:Theinnerarraysarealways9ch

c# - 从内存位置复制字节时是否需要固定结构

我在C#中定义了一个结构来镜像native数据结构,并使用了Sequential的StructLayout。为了将结构转换为SocketIOControl方法所需的12字节(3x4字节),我使用Marshal.Copy将字节复制到数组。由于结构只包含值类型,我是否需要在执行复制之前固定结构?我知道GC会压缩堆,因此引用类型的内存地址可能会在GC期间发生变化。堆栈分配的值类型也是如此吗?包含pin操作的当前版本如下所示:[StructLayout(LayoutKind.Sequential,Pack=1)]structTcpKeepAliveConfiguration{publicuin

c# - .NET 内存大小

我有一个关于存储数据及其内存占用的非常基本的问题。我有一个List存储我需要的基础对象。类型t有一个intid来定义它,以及其他字段。我现在有一本字典。如果我创建一个Dictionary,其中t是值的对象,如果我创建Dictionary,内存分配会高得多吗?,即存储了t对象的副本,还是仅再次存储对t的引用?谢谢 最佳答案 这取决于T是什么。如果T是引用类型(即类),那么字典中只会存储一个引用。如果T是一个值类型(一个struct),那么将存储一个副本。 关于c#-.NET内存大小,我们在

c# - 我应该压缩内存中的 C# 对象以获得更好的性能吗?

我有一个应用程序(C#、WPF)可以显示许多财务图表以及来自服务器的实时数据流。在内存中收集的数据可能会变得有点大,我不想在磁盘上保留任何数据。由于历史数据本身不会改变,只会被添加,以某种压缩格式保留该数据(存储在集合对象中)是否有意义?是否有可能,如果可以,有人可以推荐一个好的做法吗?更新关于性能和权衡的一些注意事项:我知道压缩会增加访问数据的延迟,但是,用户只需要对到达的新数据进行快速更新。当访问已经呈现的数据(例如,研究或重新呈现它)时,他不需要快速响应。 最佳答案 压缩和解压缩会使您的应用程序变慢,因此对于性能(速度)而言,

c# - 在 string.Split() 之后有更好的 TRIM() 方法吗?

注意到一些代码,例如string[]ary=parms.Split(",".ToCharArray(),StringSplitOptions.RemoveEmptyEntries);for(inti=0;i工作正常,但想知道是否有更好的方法一步完成 最佳答案 string[]trimmedStrings=parms.Split(',').Select(s=>s.Trim()).Where(s=>s!=String.Empty).ToArray();顺便说一句,考虑使用像List这样的通用类型列表而不是遗留数组IListtrimmed

c# - 将方法转换为静态方法时的内存使用

我开始使用Resharper,它指示何时可以将方法设为静态。将几百个方法转换为静态方法会在很长一段时间内增加内存占用吗? 最佳答案 否-更改为静态方法对内存没有影响。第一次引用类型(无论是静态还是非静态)时,将初始化任何静态成员并运行静态构造函数。但是,如果您只是考虑将方法从非静态方法切换到静态方法,这对垃圾回收或总内存占用量没有影响。如果将类成员更改为静态成员,您只需担心内存占用量会发生变化。在这种情况下,一旦类型被访问,静态字段将保持根基,并且不会被GC收集。这通常只在必要时进行,并且是按设计-您将成员设置为静态的,因为您希望它

c# - 如果它存在而不是数据库,我如何缓存对象并从内存中读取?

我有以下四个类:publicclassSection{publicintSectionId{get;set;}publicstringName{get;set;}publicstringTitle{get;set;}publicstringMetaTag{get;set;}publicstringMetaDescription{get;set;}publicstringUrlSafe{get;set;}publicstringHeader{get;set;}publicstringImageName{get;set;}}publicinterfaceISectionRepository

c# - 图像加载内存泄漏与 C#

我的应用程序在加载大量图像时遇到内存泄漏问题。我是C#的新手,我认为内存泄漏问题的日子已经过去了。我无法弄清楚问题-也许我正在使用一些我没有正确处理的非托管模块?为了说明我的问题,我简化了导致问题的核心并将其移至一个干净的项目中。请注意,这些都是愚蠢的代码,不能反射(reflect)它来自的原始应用程序。在测试应用程序中,我有2个按钮,触发两个事件。按钮1-创建:将对象设置为数据上下文。这将加载图像并通过将对象设置为DataContext使它们保持事件状态:varimgPath=@"C:\some_fixed_path\img.jpg";DataContext=newSillyImag